perm filename AVGRED.SAI[PIC,HE] blob
sn#430331 filedate 1979-04-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00005 ENDMK
C⊗;
ENTRY AVGRED;
BEGIN "AVGRED"
REQUIRE "36A" COMPILER!SWITCHES;
REQUIRE "BUFDEC" SOURCE!FILE;
INTERNAL SIMPLE INTEGER PROCEDURE AVGRED(INTEGER INBUF,FACTOR);
BEGIN "AVGRED"
INTEGER ROWNUM,COLNUM,NEWROW,NEWCOL,OUTBUF,ICOL,JCOL,KCOL,
IROW,JROW,KROW,NEWPT,PTVAL,II,FACTSQ,RSTOP,CSTOP,PTR1,PTR2;
DEFINE !="COMMENT";
COMMENT CALCULATE NEW ROW AND COLUMN SIZE;
NEWROW←(ROWNUM←ROWS(INBUF))/FACTOR; ! ROWS IN NEW PIX;
NEWCOL←(COLNUM←COLMS(INBUF))/FACTOR; ! COLMS IN NEW PIX;
FACTSQ←FACTOR*FACTOR; ! NUMBER POINTS WE AVERAGE;
COMMENT CREATE NEW BUFFER;
GETBUF(NEWROW,NEWCOL,BYTSZ(INBUF),OUTBUF←FNDBUF);
COMMENT THIS LOOP DOES IT;
COMMENT INDEX THROUGH NEW PICTURE;
FOR IROW←1 STEP 1 UNTIL NEWROW DO
BEGIN
PTR1←OUTPTR(IROW,1,OUTBUF);
JROW←1+(IROW-1)*FACTOR; ! START ROW OF SUB-MATRIX;
RSTOP←JROW+FACTOR-1; ! LAST ROW OF SUB-M;
FOR ICOL←1 STEP 1 UNTIL NEWCOL DO
BEGIN
JCOL←1+(ICOL-1)*FACTOR; ! START COL OF SUB-MATRIX IN OLD PIX;
NEWPT←0;
CSTOP←JCOL+FACTOR-1;
COMMENT THIS IS THE ACTUAL AVERAGING LOOP;
FOR KROW←JROW STEP 1 UNTIL RSTOP DO
BEGIN
PTR2←INPTR(KROW,JCOL,INBUF);
FOR KCOL←JCOL STEP 1 UNTIL CSTOP DO
NEWPT←NEWPT+ILDB(PTR2); ! ADD THEM UP;
END;
NEWPT←NEWPT/FACTSQ; ! GET AVERAGE;
IDPB(NEWPT,PTR1);
END;
ROWCHK(CHKROW,ROWS,IROW,50);
END;
RETURN (OUTBUF); ! OUR RESULT IS THE NEW BUFFER;
END "AVGRED";
END "AVGRED";